我有一些包含可变数据的文字。
My age is: <span class="var" id="age">54</span> and my name is <span class="var" id="name">Matt</span>
如果没有设置url参数,那么页面使用54这是正确的,但是如果我在网址中设置年龄,例如?age=20
,那么我希望将年龄设置为20。
文本来自数据库,并设置为名为$content
的变量。
不重复。文本来自数据库,只需要替换就是设置了url param
答案 0 :(得分:0)
由于您有显示年龄的“条件”,因此您必须使用PHP if else
来检查日期。以下是您可以使用的代码以及解释。
假设下面是你从db字段得到的字符串。
$fetched_string = '<p> My Smith from <span class="var" id="town">Manchester, aged, <span >class="var" id="age">54</span>';
现在您必须提取年龄,该年龄始终介于id="age">
和</span>
之间
最好的方法是为此创建一个PHP函数。
function str_between($string, $searchStart, $searchEnd, $offset = 0) {
$startPosition = strpos($string, $searchStart, $offset);
if ($startPosition !== false) {
$searchStartLength = strlen($searchStart);
$endPosition = strpos($string, $searchEnd, $startPosition + 1);
if ($endPosition !== false) {
return substr($string, $startPosition + $searchStartLength, $endPosition - $searchStartLength);
}
return substr($string, $startPosition + $searchStartLength);
}
return $string;
}
现在,您只需要传递提取年龄的左侧(将是searchStart)和右侧(searchEnd)的字符串值。以下是执行此操作的代码。
$fetched_age = str_between($fetched_string, 'id="age">', '</span>');
基于此,我修改了您可以按原样使用的最终代码。
//To get the data from a URL, $_GET method is used. First you will check if the "age" has been set in the URL or not. This is done by:
function str_between($string, $searchStart, $searchEnd, $offset = 0) {
$startPosition = strpos($string, $searchStart, $offset);
if ($startPosition !== false) {
$searchStartLength = strlen($searchStart);
$endPosition = strpos($string, $searchEnd, $startPosition + 1);
if ($endPosition !== false) {
return substr($string, $startPosition + $searchStartLength, $endPosition - $searchStartLength);
}
return substr($string, $startPosition + $searchStartLength);
}
return $string;
}
//Fetched String for db
$fetched_string = $row['full_string'];
//This will give you the age
$fetched_age = str_between($fetched_string, 'id="age">', '</span>');
if (isset($_GET['age'])) {
//If age is set in the URL, assign it to the PHP Variable
$age_display = $_GET['age'];
}
else {
//If age is not set, then assign the age fetched from the db.
$age_display = $fetched_age;
}
这是你在找什么?