js就是为html而生,比如,我想验证
<code><style> #demo_div{display:none;} </style> <div id="demo_div"></div> </code>
那么用jquery的话,alert($('#demo_div').attr('display'))就行,但是如果我用服务器端的php如何抓取一个网页中DOM元素,然后结合css来分析它的css属性呢?有没有已经写好的函数or类?
回复内容:
js就是为html而生,比如,我想验证
<code><style> #demo_div{display:none;} </style> <div id="demo_div"></div> </code>
那么用jquery的话,alert($('#demo_div').attr('display'))就行,但是如果我用服务器端的php如何抓取一个网页中DOM元素,然后结合css来分析它的css属性呢?有没有已经写好的函数or类?
补充3:
请在给题主的问题点“赞”之前,好好阅读本问题的补充2和评论7楼,想一下是否应该这样做。
楼主的Y问题本身倒还可以,但题主弄出XY Problem的不良实践,理应再得到一次教训。
补充2:
好嘛你个题主!
闹了半天,一短一长两个答案,调动3个会员6层楼评论,问你半天你才说出最终要做什么!!!
干嘛不早把你的本来目的交代清楚?!
典型的XY Problem——刻舟求剑,问非所求,必须要先麻烦社区半天才能找出来你的目的,真是一点意思也没有。题主请先阅读一下这篇文章。
我看了下题主的问题的反响,几乎所有的问题都是负分,我想题主你这个问题又该找踩了。
你还是好好回去反省下吧,多读几遍《提问的智慧》,少给社区留下一些莫名其妙、浪费时间的猜谜游戏。
补充1:
你也许可以考虑用PHP调用一个只支持HTML+CSS(不带js)的渲染核心,然后把渲染结果拿来利用。这样至少就可以:
- 适当容忍HTML中的微小问题,得到一个标准的树形DOM结构
- 准确处理CSS覆盖关系,正确得到特定元素的任意CSS属性
如果想做斩草除根的实现,就不要想着只在PHP的框架内做得到这个事情。
完全实现你这个需求,单纯依赖任何PHP库,死也做不到。任何。死也不行。没疑问。
因为一个简单的原理:如果只分析网页的HTML字符串文本,我们完全无法判断demo_div最后的某个属性,会处在一个什么状态上。
例如你的例子里,display
属性是用额外的<style></style>
定义的。但我们也可以另外这样去定义:
- DOM标签中内嵌
style
属性定义 - 链接其他的css样式表文件
- CSS覆盖关系,多次定义同一个属性时,只有最高优先级的有效
- 损点的办法,网页中嵌入js去修改css定义过的属性
简单的说:坑人的办法要多少有多少,闭着眼睛想出100来个不成问题。想在PHP的框架中找一个通行的办法,不要想,和永动机一样根本行不通。
解决这个问题的唯一办法,是真的用浏览引擎把这个页面渲染出来,然后才能判断某个DOM元素的某个属性,最终会被改成什么样子。但这样也无法对抗以下类似的问题:
- 渲染引擎造成的区别
- js的额外捣鬼,例如一开始是显示的,过个三五秒钟再隐藏
说了这么多,最终的意思就是:js能够解析DOM,说到底依赖于js在执行时已经有了浏览器环境做铺垫,页面已经被渲染出来。这一点是PHP怎么也达不到的。
甚至严重点说,由于js的存在,从HTML中解析出的DOM结构,其实到最后很大程度上也是不准确的。用js让网页的面貌“大翻天”毫无困难。也就是说,PHP实现的DOM解析,其实从某个角度上来说,相对于浏览器的渲染行为总是片面的,需要你科学的看待和使用。
你的这种问题总是需要依赖人类的智能,见招拆招,同时做好对方网站会不断变化的准备。就像那些火车抢票软件的做法那样。比如你的这个,如果你确定对方网页中<style></style>
块总是出现在demo_div
块的上方,那就用DOM库找到紧临demo_div
前面的<style></style>
,然后用正则表达式做字符串分析就行。原网页变化了,你的对策再跟着改。
不过,如果原网页是在开发者能够控制的范围内的,那恐怕就需要检讨数据传递方式,为什么要给开发者自己惹这么大的麻烦了。
你是不是需要 PHPJQuery ?
补充答案:
骚年,用正确的工具做对的事情,Node.js应该是你的最佳解决方案。
用php开启一个浏览器引擎的进程进行渲染,在里面运行jquery,将结果用ajax返回至php里。
略为高端,楼主我只能帮你到这里了。

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

PHP에서는 클론 키워드를 사용하여 객체 사본을 만들고 \ _ \ _ Clone Magic 메소드를 통해 클로닝 동작을 사용자 정의하십시오. 1. 복제 키워드를 사용하여 얕은 사본을 만들어 객체의 속성을 복제하지만 객체의 속성은 아닙니다. 2. \ _ \ _ 클론 방법은 얕은 복사 문제를 피하기 위해 중첩 된 물체를 깊이 복사 할 수 있습니다. 3. 복제의 순환 참조 및 성능 문제를 피하고 클로닝 작업을 최적화하여 효율성을 향상시키기 위해주의를 기울이십시오.

PHP는 웹 개발 및 컨텐츠 관리 시스템에 적합하며 Python은 데이터 과학, 기계 학습 및 자동화 스크립트에 적합합니다. 1.PHP는 빠르고 확장 가능한 웹 사이트 및 응용 프로그램을 구축하는 데 잘 작동하며 WordPress와 같은 CMS에서 일반적으로 사용됩니다. 2. Python은 Numpy 및 Tensorflow와 같은 풍부한 라이브러리를 통해 데이터 과학 및 기계 학습 분야에서 뛰어난 공연을했습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구
