我正在尝试使用此正则表达式将标题标记从|title|Page title|
替换为<title>Page Title</title>
。但作为一个完整的业余爱好者,它并没有顺利......
'^|title|^[a-zA-Z0-9_]{1,}|$' => '<title>$1</title>'
我很想知道如何修复它,更重要的是,我做错了什么以及为什么错了。
答案 0 :(得分:1)
你几乎得到了它:
您应该将空格字符添加到搜索组
$string = '|title|Page title|';
$pattern = '/\|title\|([a-zA-Z0-9_ ]{1,})\|/';
$replacement = '<title>$1</title>';
echo preg_replace($pattern, $replacement, $string); //echoes <title>Page title</title>
见工作demo
OP在评论中发布了一些错误的代码,试试这个版本:
$regular_expressions = array( array( '/\|title\|([a-zA-Z0-9_ ]{1,})\|/' , '<title>$1</title>' ));
foreach($regular_expressions as $regexp){
$data = preg_replace($regexp[0], $regexp[1], $data);
}
答案 1 :(得分:0)
有一个小功能我想出了一段时间,当用户通过我的服务提交链接时,基本上会刮掉页面的标题。此函数的作用是获取提供的URL的内容。寻找一个标题标签,如果找到,在标题标签之间得到什么,并转储它的结果。稍微调整一下,我相信无论你做什么都可以使用替换方法,并使其适合您的需要。所以这更多的是一个起点而不是一个答案,但总的来说,我希望它在某种程度上有所帮助。
$url = 'http://www.chrishacia.com';
function get_page_title($url){
if( !($data = file_get_contents($url)) ) return false;
if( preg_match("#<title>(.+)<\/title>#iU", $data, $t)) {
return trim($t[1]);
} else {
return false;
}
}
var_dump(get_page_title($url));
答案 2 :(得分:0)
<?php
$s = "|title|Page title|";
$s = preg_replace('/^\|title\|([^\|]+)\|/', "<title>$1</title>", $s);
echo $s;
?>