PHP正则表达式匹配URL包含并用破折号代替斜杠

尤尔西

仅更改包含change.com的网址,将“ /”替换为“-”,并将.html放在末尾

<a href="http://www.notchange.com/adf/i18n/wiki/" class="coasfs" >as3rc</a>

<a href="http://www.change.com/q/photoshopbattles/comnts/2n4jtb/psbattle_asgfdhj/" class="coasfs" >as3rc</a>

<a href="http://www.change.com/q/photottles/commes/" class="coefs" >ase3rc</a>

我需要下面的结果链接

http://www.change.com/q-photoshopbattles-comments-2n4jtb-psbattle_asgfdhj.html

请帮助我,我用正则表达式尝试了很多次,但都失败了。

内森

这是完成此操作的一种方法,但是它结合使用了Regexes和PHP函数。此方法将比纯正则表达式解决方案简单。

$string = '<a href="http://www.notchange.com/adf/i18n/wiki/" class="coasfs" >as3rc</a>'
    . '<a href="http://www.change.com/q/photoshopbattles/comnts/2n4jtb/psbattle_asgfdhj/" class="coasfs" >as3rc</a>'
    . '<a href="http://www.change.com/q/photottles/commes/" class="coefs" >ase3rc</a>';

//The regex used to match the URLs
$pattern = '/href="(http:\/\/www.change.com\/)([^">]*)"/';

preg_match_all($pattern, $string, $matches, PREG_SET_ORDER);

foreach ($matches as $val) {
    //trim the ending slash if exists, replace the slashes in the URL path width a -, and add the .html
    $newUrl = $val[1] . str_replace("/", "-", trim($val[2], "/")) . '.html';

    $string = str_replace($val[0], 'href="' . $newUrl . '"', $string);
}
echo $string;

我使用了正则表达式来帮助查找需要修改的URL,然后使用PHP必须完成的某些内置函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式 - 匹配包含两个破折号但不包含三个破折号的模式

破折号或正斜杠的正则表达式日期格式

正则表达式匹配至少包含3个破折号/连字符的字符串

正则表达式以匹配星号,波浪号,破折号和方括号

正则表达式中的破折号

Perl正则表达式删除破折号

正则表达式匹配校验和,带或不带破折号

正则表达式匹配以破折号开头的任何连续行

有效时匹配数字和破折号的正则表达式

确保正则表达式匹配不以破折号开头

使用正则表达式的Python匹配破折号

正则表达式匹配字符串中的多个空格/破折号

正则表达式匹配未知字符之间的破折号

仅在破折号之间的组中匹配正则表达式

正则表达式用于返回不带连字符/破折号的精确匹配

Elasticsearch:使用正则表达式搜索包含破折号或减号的文本

连字符/破折号包含在正则表达式单词边界\ b中

正则表达式仅包含数字和破折号

Erlang正则表达式-HTML +破折号和破折号

URL中破折号分隔文件名的正则表达式组

正则表达式:如何匹配整个单词,其中只有一个破折号不超过 1 个破折号?

如果破折号在字符串中连续n次,则正则表达式匹配

正则表达式:匹配两个特定符号之间的每一个破折号

正则表达式,用于匹配大写字母和破折号,后跟逗号

如何使用多行正则表达式将模式与数字或数字和单破折号相匹配

正则表达式,用于替换与字符串数组匹配的非破折号字符

正则表达式无法捕获以字母字符开头和结尾并包含破折号的字符串

使用正则表达式验证包含破折号的12位数字字符串

正则表达式,用于替换多个空格和带破折号的破折号