是否可以在php中使用正则表达式替换URL?
输入文本:是否可以在php中使用正则表达式替换URL?,php,regex,preg-replace,Php,Regex,Preg Replace,输入文本:我们的网站是 需要输出:我们的网站是 规则:任何url都需要替换为[x]。URL可以是http/https或www,也可以是me.com。解决方案需要不区分大小写 $inputext = "<a href="www.me.com">www.me.com</a>"; $rule ="/(?<!a href=\")(?<!src=\")((http|ftp)+(s)?:\/\/[^<>\s]+)/i"; $replacetext = "[X
我们的网站是
需要输出:我们的网站是
规则:任何url都需要替换为[x]。URL可以是http/https或www,也可以是me.com。解决方案需要不区分大小写
$inputext = "<a href="www.me.com">www.me.com</a>";
$rule ="/(?<!a href=\")(?<!src=\")((http|ftp)+(s)?:\/\/[^<>\s]+)/i";
$replacetext = "[X]";
$outputext = preg_replace($rule, $replacetext, $inputext);
echo($outputext);
$inputext=”“;
$rule=“/(?\s]+)/i”;
$replacetext=“[X]”;
$outputext=preg_replace($rule,$replacetext,$inputext);
echo($outputext);
谢谢您的建议。您可以用
http/https
和www
或不使用www
url来获取这些信息吗
<?php
$re = '/(https?:\/\/|(www\.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?)/mi';
$str = 'Our website is <a href="www.me.com">www.me.com</a>';
$subst = '[x]';
$result = preg_replace($re, $subst, $str);
echo $result;
这个如何抓取,http/https
和www
或不带www
url
<?php
$re = '/(https?:\/\/|(www\.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?)/mi';
$str = 'Our website is <a href="www.me.com">www.me.com</a>';
$subst = '[x]';
$result = preg_replace($re, $subst, $str);
echo $result;
永远不要用正则表达式解析HTML。在这样的工作中使用DOM解析器似乎有些过分,但可以保证在将来的某个时候避免出现问题
$input = 'Our website is <a href="www.me.com">www.me.com</a>';
$replace = "[x]";
$dom = new DomDocument();
$dom->loadHTML($input, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$a = $dom->getElementsByTagName("a")->item(0);
$a->setAttribute("href", $replace);
$a->textContent = $replace;
echo $dom->saveHTML();
$input='我们的网站是';
$replace=“[x]”;
$dom=新的DomDocument();
$dom->loadHTML($input,LIBXML\u HTML\u noimpled | LIBXML\u HTML\u NODEFDTD);
$a=$dom->getElementsByTagName(“a”)->item(0);
$a->setAttribute(“href”、$replace);
$a->textContent=$replace;
echo$dom->saveHTML();
永远不要用正则表达式解析HTML。在这样的工作中使用DOM解析器似乎有些过分,但可以保证在将来的某个时候避免出现问题
$input = 'Our website is <a href="www.me.com">www.me.com</a>';
$replace = "[x]";
$dom = new DomDocument();
$dom->loadHTML($input, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$a = $dom->getElementsByTagName("a")->item(0);
$a->setAttribute("href", $replace);
$a->textContent = $replace;
echo $dom->saveHTML();
$input='我们的网站是';
$replace=“[x]”;
$dom=新的DomDocument();
$dom->loadHTML($input,LIBXML\u HTML\u noimpled | LIBXML\u HTML\u NODEFDTD);
$a=$dom->getElementsByTagName(“a”)->item(0);
$a->setAttribute(“href”、$replace);
$a->textContent=$replace;
echo$dom->saveHTML();
任何url或a
标记中的url?尝试*?“([^”]*)”\>(.*)\
任何url或a
标记中的url?尝试*?“([^”]*)”\>(.*)\
您缺少protocol@RobbieAverill呜呜,你能帮我看看我错过了什么吗?我真的不知道我错过了什么请看这个问题:“规则:任何url都需要用[x]替换。url可能是http/https或www,也可能是简单的me.com”@RobbieAverill Ohh是的,先生,现在知道了,我要编辑我的答案并修复它。谢谢:)@RobbieAverill先生编辑了我的答案。希望这将与协议现在工作。谢谢你指出我的错误:)你错过了protocol@RobbieAverill呜呜,你能帮我看看我错过了什么吗?我真的不知道我错过了什么请看这个问题:“规则:任何url都需要用[x]替换。url可能是http/https或www,也可能是简单的me.com”@RobbieAverill Ohh是的,先生,现在知道了,我要编辑我的答案并修复它。谢谢:)@RobbieAverill先生编辑了我的答案。希望这将与协议现在工作。感谢您指出我的错误:),但是如果字符串不包含锚元素,它将不起作用。您的问题提供了示例输入文本,这就是我必须处理的全部内容。但是如果字符串不包含锚元素,它将不起作用。您的问题提供了示例输入文本,这就是我必须处理的全部内容。