我試圖用|title|Page title|
替換標題標記爲<title>Page Title</title>
,使用這個正則表達式。但作爲一個完整的愛好者,它不是去好..Php標題正則表達式
'^|title|^[a-zA-Z0-9_]{1,}|$' => '<title>$1</title>'
我很想知道如何解決它,更重要的是,我做錯了什麼,爲什麼這是錯的。
我試圖用|title|Page title|
替換標題標記爲<title>Page Title</title>
,使用這個正則表達式。但作爲一個完整的愛好者,它不是去好..Php標題正則表達式
'^|title|^[a-zA-Z0-9_]{1,}|$' => '<title>$1</title>'
我很想知道如何解決它,更重要的是,我做錯了什麼,爲什麼這是錯的。
你幾乎得到它:
你應該空格字符添加到您的搜索組
$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);
}
這樣的作品,權利,直到我嘗試將其插入到我的系統類是這樣的: \t公共職能render_template_basic($數據){ \t \t $數據=修剪($的數據); \t \t $ regular_expressions =陣列( \t \t \t '/ \ |標題\ |([A-ZA-Z0-9_] {1,})\ | /'=> '
抱歉,雙重發帖。無法編輯我之前的評論。 當我打印$ regexp [0]時,打印出「<」,當我打印$ regexp [1]時打印出「t」,這裏究竟發生了什麼? 我從來沒有遇到過這種性質的問題,它很奇怪,因爲發生了一些不被要求的事情! – Hultin 2013-03-18 20:37:21
我可以看到你做錯了什麼,將它添加到我的答案.. – Nelson 2013-03-18 20:46:20
繼承人一個小功能我想出了一段時間,當用戶通過我的服務提交鏈接時,基本上刮掉了頁面的標題。該功能所做的是獲取提供的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));
<?php
$s = "|title|Page title|";
$s = preg_replace('/^\|title\|([^\|]+)\|/', "<title>$1</title>", $s);
echo $s;
?>
你的角色組不會不包含空間? – 2013-03-18 19:46:42
你可以'爆炸'('|',$ string)' – Tchoupi 2013-03-18 19:48:13
沒有空間也行不通,我在accual webserver上實際使用了「test」,它也沒有吞下去。警告:preg_replace()[function.preg-replace]:沒有在D:\ www \ core \ classes \ system.class.php中找到的結束匹配分隔符'>' 37 – Hultin 2013-03-18 19:51:37