Home Backend Development PHP Tutorial PHP HTML code string interception implementation code_PHP tutorial

PHP HTML code string interception implementation code_PHP tutorial

Jul 21, 2016 pm 03:45 PM
a class div html php code accomplish intercept data yes

而且给的数据是HTML代码串,比如这样:

When intercepting, the content inside the div tag must be intercepted, and the HTML tag must be retained, and only the text in it must be processed. For example, I may just intercept the word "李" in "李思", but if I put it on the front end like this, the a tag in front of "李思" will not be closed, so after intercepting, I need to ensure that the HTML syntax is correct.

This problem is really not easy to solve, and it made me depressed for two days. Please note that this is just a string, but the content is HTML code and there is no DOM. It would be easier if it were processed on the front end. You can directly obtain the DOM, then process the nodes inside, and finally output things like innerHTML. It doesn't work now, I have to change my mind. My colleague’s thinking is this:

Loop through each character of the string. Set a tag, and set it to 1 when it encounters the tag < at the beginning of the tag. The following characters will not be counted, and then start counting after encountering >. When processing the string inside the label, you must first determine whether the current character encoding may be Chinese. Generally speaking, the length of UTF-8 encoded Chinese characters in PHP is 3, so if you encounter a Chinese character encoding , I have to skip two uncounted ones... At this point, my head is starting to get big. Personally, I think this method is very unpleasant. First of all, this kind of exquisite logic is not easy to control, and The length of Chinese generated under UFT-8 encoding may be 3 or 4 so the rigor of the code is questionable. .

My personal idea is to use Tidy (please see the PHP manual for specific usage). I studied Tidy yesterday and found that this thing is quite useful. First, convert this string into a Tidy object, like this:

$tidy = tidy_parse_string($str, array(), 'utf8′); // The last one is to set the encoding. Note that here is utf8, not utf-8, there is no connecting line in the middle.

Then get the body in $tidy (because $tidy will automatically add tags such as after conversion):

$body = tidy_get_body($tidy);

At this time, you can use var_dump to look at some $body structures, and you will find that it turns each tag into a corresponding object with corresponding attributes. For example, such as sdf , some attributes corresponding to such a statement are:

name=>”a”
value => “sdf
child=> array{[0]=>a Text node object, value is sdf}
attribute=array{”href”=>”#”}
…..Other attributes

As you can see, we can actually process the value of the text node below the node corresponding to the a tag separately, so that it will not destroy any HTML integrity. Originally, I thought that after changing the value of the text node in the a tag, the value of the a tag would also change accordingly. In that case, it would be OK if I directly returned the value of the node corresponding to the a tag. I didn't expect it to be like that. Alas, so I processed the text in it. Then you still have to spell out the new HTML yourself.

After knowing the structure of the Tidy object, everything is easy to handle. Just traverse all the nodes. For this requirement, it is to find the div tag and then start processing the nodes inside. The code is as follows:

if(mb_strwidth($subchild->value, 'utf-8′) >= $len)
{
$subchild->value = mb_strimwidth($subchild->value, 0 , $len, '…', 'utf-8′);
$trimed_str .= $subchild->value;
break;
}
else
{
$ trimed_str .= $subchild->value;
$len = $len - mb_strwidth($subchild->value, 'utf-8′);
}

The $subchild inside is a child node. Note that mb_strwidth is used here to get the string length. I highly recommend this mb_strwidth, it’s very useful. It will treat Chinese as two characters in length, which exactly meets the needs here! Moreover, mb_strimwidth is used when intercepting strings. This function will also treat Chinese as two characters in length. Functions starting with mb_ are really easy to use.

I won’t write out the specific code, because it is written based on a requirement and is not made into a universal form. One day I have time to make it universal and publish it.

In addition, it is a pity that FireFox does not support the text-overflow attribute, otherwise there would be no need to work so hard in the background to truncate it. If you have a better method, please feel free to suggest it! Any help is greatly appreciated.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/320341.htmlTechArticleAnd the data given is an HTML code string, such as this: div class="aaa"a href="/aaa .php?id=1″ Zhang San/a commented a href=”/aaa.php?id=444″ Li Si/a shared a href=”bbb.ht...
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP and Python: Comparing Two Popular Programming Languages PHP and Python: Comparing Two Popular Programming Languages Apr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

The Roles of HTML, CSS, and JavaScript: Core Responsibilities The Roles of HTML, CSS, and JavaScript: Core Responsibilities Apr 08, 2025 pm 07:05 PM

HTML defines the web structure, CSS is responsible for style and layout, and JavaScript gives dynamic interaction. The three perform their duties in web development and jointly build a colorful website.

React's Role in HTML: Enhancing User Experience React's Role in HTML: Enhancing User Experience Apr 09, 2025 am 12:11 AM

React combines JSX and HTML to improve user experience. 1) JSX embeds HTML to make development more intuitive. 2) The virtual DOM mechanism optimizes performance and reduces DOM operations. 3) Component-based management UI to improve maintainability. 4) State management and event processing enhance interactivity.

Understanding HTML, CSS, and JavaScript: A Beginner's Guide Understanding HTML, CSS, and JavaScript: A Beginner's Guide Apr 12, 2025 am 12:02 AM

WebdevelopmentreliesonHTML,CSS,andJavaScript:1)HTMLstructurescontent,2)CSSstylesit,and3)JavaScriptaddsinteractivity,formingthebasisofmodernwebexperiences.

PHP: A Key Language for Web Development PHP: A Key Language for Web Development Apr 13, 2025 am 12:08 AM

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

Explain the match expression (PHP 8 ) and how it differs from switch. Explain the match expression (PHP 8 ) and how it differs from switch. Apr 06, 2025 am 12:03 AM

In PHP8, match expressions are a new control structure that returns different results based on the value of the expression. 1) It is similar to a switch statement, but returns a value instead of an execution statement block. 2) The match expression is strictly compared (===), which improves security. 3) It avoids possible break omissions in switch statements and enhances the simplicity and readability of the code.

What is Cross-Site Request Forgery (CSRF) and how do you implement CSRF protection in PHP? What is Cross-Site Request Forgery (CSRF) and how do you implement CSRF protection in PHP? Apr 07, 2025 am 12:02 AM

In PHP, you can effectively prevent CSRF attacks by using unpredictable tokens. Specific methods include: 1. Generate and embed CSRF tokens in the form; 2. Verify the validity of the token when processing the request.

See all articles