相关疑难解决方法(0)

在PHP中将纯文本URL转换为HTML超链接

我有一个简单的评论系统,人们可以在纯文本字段中提交超链接.当我将这些记录从数据库显示回网页时,我可以使用PHP中的RegExp将这些链接转换为HTML类型的锚链接吗?

我不希望算法使用任何其他类型的链接,只需http和https.

php regex hyperlink preg-replace

57
推荐指数
6
解决办法
8万
查看次数

循环遍历DOMDocument

我正在遵循这个问题的建议:Robust,PHP的成熟HTML解析器,关于解析可能与DOMDocument格式错误的HTML .

是否有任何简单的方法来循环解析文档?所以我想像这样循环html.

$html='<ul>
         <li>value1</li>
         <li>value1</li>
         <li>value3
            <p>subvalue</p>
         </li>
        </ul>
        <p>hello world</p>';

$doc = new DOMDocument();
$doc->loadHTML($html);
???
foreach (??? as $node)
{
  print $node->nodeName.':'.$node->nodeValue;
}
Run Code Online (Sandbox Code Playgroud)

得到的结果有点像这样.

 ul:
 li:value1
 li:value2
 li:value3
 p:subvalue
 p:hello world
Run Code Online (Sandbox Code Playgroud)

单独使用$doc->childNodes并不能真正做到我想要的.因为它似乎没有下到树中的较低分支.我使用halfdan建议的代码,我得到这样的结果.

html:
html:value1
         value1
         value3
            subvalue

        hello world
Run Code Online (Sandbox Code Playgroud)

php loops domdocument

21
推荐指数
1
解决办法
2万
查看次数

需要一个好的正则表达式将URL转换为链接,但只留下现有的链接

我有大量用户提交的内容.它是HTML,可能包含URL.其中一些<a>已经是(如果用户是好的)但有时用户是懒惰的,只需输入www.something.com或最好是http://www.something.com.

我找不到一个像样的正则表达式来捕获URL但忽略那些紧靠双引号或'>'的权利.谁有一个?

html php regex url

20
推荐指数
3
解决办法
7773
查看次数

将url转换为字符串中的链接,除非它们位于html标记的属性中

我试图转换,从textarea输入($_POST['content']),所有网址链接.

$content = preg_replace('!(\s|^)((https?://)+[a-z0-9_./?=&-]+)!i', ' <a href="$2" target="_blank">$2</a> ', nl2br($_POST['content'])." ");
$content = preg_replace('!(\s|^)((www\.)+[a-z0-9_./?=&-]+)!i', '<a target="_blank" href="http://$2"  target="_blank">$2</a> ', $content." ");
Run Code Online (Sandbox Code Playgroud)

目标链接格式:www.hello.comhttp(s)://(www).hello.com

但这似乎打破任何iframe,图像或类似,

正确的正则表达式如何忽略html标签中的url?

注意:我知道我需要两个表达式; 一个检测没有协议链接(比如www.hello.com,所以我需要预先添加)和另一个检测带协议的URL(所以不需要预先添加).

php regex url preg-replace linkify

11
推荐指数
2
解决办法
9014
查看次数

标签 统计

php ×4

regex ×3

preg-replace ×2

url ×2

domdocument ×1

html ×1

hyperlink ×1

linkify ×1

loops ×1