PHP 在 link 标签中做 2 preg_replace
PHP do 2 preg_replace in link tag
我正在尝试制作一个多preg_replace,不确定那是否是正确的功能。
我想要这个结果
[link]www.mynewhomepage.com(我的新主页)[/link]
成为<a href=mynewhomepage.com>My New homepage</a>
我制作了这段代码,它给了我我想要的东西
$string = 'i have made a new homepage visit [link]http://myhomepage.dk(My New homepage)[/link]';
$find = array('#\[link\](.+)\[\/link\]#iUs', '#\((.+)\)#iUs');
$replace = array('<a href=>', '</a>');
$result = preg_replace($find, $replace, $string);
echo $result;
它给了我这个结果:http://myhomepage.dk>
任何人都可以在我做错事的正确方向上指导或帮助我吗? :)
谢谢你,祝你暑假快乐:)
这应该有效:
\[link\](.*?)\((.*)\)\[\/link\]
基本上匹配到第一个左括号,也从最后一个括号匹配到末尾。然后将这些片段放入捕获组中以供以后引用。
使用<a href=""></a>
作为替代
关于你原来的问题,你的解决方案有这些问题:
对于第一次替换,我们应该使用 <a href="
。请注意,我们在 link 的开头使用 "
,但目前我们不在末尾添加它。这样,嵌套正则表达式会更容易。
然后,在第二个正则表达式中,我们应该在开头添加 ">
以关闭标签。此外,您根本没有使用捕获的组。那将是替代品:"></a>
也就是把这一行改成:
$replace = array('<a href=>', '</a>');
对此:
$replace = array('<a href="', '"></a>');
我正在尝试制作一个多preg_replace,不确定那是否是正确的功能。
我想要这个结果
[link]www.mynewhomepage.com(我的新主页)[/link]
成为<a href=mynewhomepage.com>My New homepage</a>
我制作了这段代码,它给了我我想要的东西
$string = 'i have made a new homepage visit [link]http://myhomepage.dk(My New homepage)[/link]';
$find = array('#\[link\](.+)\[\/link\]#iUs', '#\((.+)\)#iUs');
$replace = array('<a href=>', '</a>');
$result = preg_replace($find, $replace, $string);
echo $result;
它给了我这个结果:http://myhomepage.dk>
任何人都可以在我做错事的正确方向上指导或帮助我吗? :)
谢谢你,祝你暑假快乐:)
这应该有效:
\[link\](.*?)\((.*)\)\[\/link\]
基本上匹配到第一个左括号,也从最后一个括号匹配到末尾。然后将这些片段放入捕获组中以供以后引用。
使用<a href=""></a>
作为替代
关于你原来的问题,你的解决方案有这些问题:
对于第一次替换,我们应该使用 <a href="
。请注意,我们在 link 的开头使用 "
,但目前我们不在末尾添加它。这样,嵌套正则表达式会更容易。
然后,在第二个正则表达式中,我们应该在开头添加 ">
以关闭标签。此外,您根本没有使用捕获的组。那将是替代品:"></a>
也就是把这一行改成:
$replace = array('<a href=>', '</a>');
对此:
$replace = array('<a href="', '"></a>');