


Detailed explanation of PHP filtering HTML string function_PHP tutorial
/***************************************************** ****************
* Process description:
* When the parameters that meet the requirements are passed into the filter function, the filter() function first
* All tags $tag to be filtered in the string are taken out through preg_match_all()
*, then the matching array of preg_match_all is looped, and each tag is divided into "left attribute" = "right value through preg_split()
* function " form, and then loop through the attribute array to be retained by
*, and take out the content matched by preg_split() to form a replaceable value of
*, and finally replace the string with str_replcae() Corresponding tag
* function list:
* function filter(&$str,$tag,$keep_attribute)
* function match($reg,&$str,$arr)
* function show ($str,$title=,$debug = True)
* Usage example:
* //Get Sohu News homepage
* $str = @file_get_content("http://news.sohu.com ");
* //Filter
* filter($str,a,href,target,alt);
* filter($str,p,align);
* show($str , filtered content);
****************************************** ****************************/
$start_time = array_sum(explode(" ",microtime()));
$str = site a
site b
site c
site d
site e
adasdfasdf
asdfasdfasdfasdf
asdfasdfasdf
asdfadsfasdf
asdfasdfadf
asdfasdf
HTML;
//显示原字串
show($str,Html);
/***********************************************************************************************************************************************************************/
//过滤
filter($str,a,href,target,alt);
filter($str,p,align);
filter($str,font,color,alt);
//显示过滤后的内容
show($str,Result);
//脚本运行时间
$run_time = array_sum(explode(" ",microtime())) - $start_time;
echo(
/**
* Description: Filter HTML string
* Parameters:
* $str: HTML string to be filtered
* $tag: Filtered tag type
* $keep_attribute:
* Attributes to be retained, this parameter can be in the form of
* href
* href,target,alt
* array(href,target,alt)
*/
function filter(&$str,$tag,$keep_attribute) {
//检查要保留的属性的参数传递方式
if(!is_array($keep_attribute)) {
//没有传递数组进来时判断参数是否包含,号
if(strpos($keep_attribute,,)) {
//包含,号时,切分参数串为数组
$keep_attribute = explode(,,$keep_attribute);
}else {
//纯字串,构造数组
$keep_attribute = array($keep_attribute);
}
}
echo("·过滤[$tag]标签,保留属性:".implode(,,$keep_attribute).
);
//取得所有要处理的标记
$pattern = "//i";
preg_match_all($pattern,$str,$out);
//循环处理每个标记
foreach($out[1] as $key => $val) {
//取得a标记中有几个=
$cnt = preg_split(/ *=/i,$val);
$cnt = count($cnt) -1;
//构造匹配正则
$pattern = ;
for($i=1; $i
$pattern .= ( .*=.*);
}
//完成正则表达式形成,如/(.*/i的样式
$pattern = "/(.*$tag>)/i";
//取得保留属性
$replacement = match($pattern,$out[0][$key],$keep_attribute);
//替换
$str = str_replace($out[0][$key],$replacement,$str);
}
}
/**
* Description: Construct tags and retain the attributes to be retained
* Parameters: $reg: pattern, expression of preg_match
* $str: string, html string
* $arr: array, Attributes to be retained
* Return:
* Returns the retained tag, such as
* e .com
*/
function match($reg,&$str,$arr) {
//match
preg_match($reg,$str ,$out);
//Get the reserved attributes
$keep_attribute = ;
foreach($arr as $k1=>$v1) {
//The defined ones should be kept Array of attributes
foreach($out as $k2=>$v2) {
//Array after matching =
$attribute = trim(substr($v2,0,strpos($v2 ,=)));
//=The previous
if($v1 == $attribute) {
//The attribute to be retained is the same as the part before = of the matching value
$ keep_attribute .= $v2;
//Save the value of this matching part
}
}
}
//Construct the return value, with a structure such as: aadd
$keep_attribute = $out[1].$keep_attribute.($out[count($out)-1]);
//return value
Return $keep_attribute;
}
/**
* Display string content
*/
function show($str,$title=,$debug = True) {
if($debug) {
if(is_array($str)) {
$str = print_r($str,True);
}
$txtRows = count(explode(" ",$str)) 1;
echo($title.:

ThesecrettokeepingaPHP-poweredwebsiterunningsmoothlyunderheavyloadinvolvesseveralkeystrategies:1)ImplementopcodecachingwithOPcachetoreducescriptexecutiontime,2)UsedatabasequerycachingwithRedistolessendatabaseload,3)LeverageCDNslikeCloudflareforservin

You should care about DependencyInjection(DI) because it makes your code clearer and easier to maintain. 1) DI makes it more modular by decoupling classes, 2) improves the convenience of testing and code flexibility, 3) Use DI containers to manage complex dependencies, but pay attention to performance impact and circular dependencies, 4) The best practice is to rely on abstract interfaces to achieve loose coupling.

Yes,optimizingaPHPapplicationispossibleandessential.1)ImplementcachingusingAPCutoreducedatabaseload.2)Optimizedatabaseswithindexing,efficientqueries,andconnectionpooling.3)Enhancecodewithbuilt-infunctions,avoidingglobalvariables,andusingopcodecaching

ThekeystrategiestosignificantlyboostPHPapplicationperformanceare:1)UseopcodecachinglikeOPcachetoreduceexecutiontime,2)Optimizedatabaseinteractionswithpreparedstatementsandproperindexing,3)ConfigurewebserverslikeNginxwithPHP-FPMforbetterperformance,4)

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Atom editor mac version download
The most popular open source editor

WebStorm Mac version
Useful JavaScript development tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

Dreamweaver Mac version
Visual web development tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.
